package com.app.micaihu.ad;

import android.content.Context;
import android.text.TextUtils;
import android.view.View;

import com.app.micaihu.ad.custom.GameImgNativeImgView;
import com.app.micaihu.ad.custom.GameImgNativeVideoView;
import com.app.micaihu.ad.custom.GameImgNativieView;
import com.app.micaihu.ad.custom.GameVideoNativieView;
import com.app.micaihu.ad.custom.H5NativeView;
import com.app.micaihu.base.bean.DataBean;
import com.app.micaihu.bean.ad.NativeAd;
import com.app.micaihu.bean.comment.NewsComment;
import com.app.micaihu.bean.news.NewsEntity;
import com.app.micaihu.configure.TypeConstant;
import com.app.micaihu.configure.URIContant;
import com.app.micaihu.configure.UmEventId;
import com.app.micaihu.custom.components.ParamMap;
import com.app.micaihu.utils.HttpUtils;
import com.app.micaihu.utils.MobclickAgentUtils;
import com.blankj.utilcode.util.LogUtils;
import com.google.gson.reflect.TypeToken;

import java.util.HashMap;
import java.util.List;

/**
 * 广告配置
 *
 * @author linkai
 */
public class AdConfig {

    public static final String SHOW_BIG_IMG = "big_img";//大图样式

    /****************
     * 广告样式类型配置  start
     **************/

    public static final String AD_VIEW_TYPE_LIST_NATIVE_SMALL = "1";
    public static final String AD_VIEW_TYPE_LIST_NATIVE_BIG = "2";
    public static final String AD_VIEW_TYPE_LIST_NATIVE_THREE = "3";
    public static final String AD_VIEW_TYPE_LIST_NATIVE_DIGLOG_IMG = "4";
    public static final String AD_VIEW_TYPE_LIST_NATIVE_DIALOG_WEB = "5";

    /*****************广告样式类型配置  end*****************/

    /****************
     * 广告统计类型
     *******************/

    public final static String TYPE_1 = "1";//类型 1普通点击
    public final static String TYPE_2 = "2";//类型 2游戏打开
    public final static String TYPE_3 = "3";//类型 3游戏下载

    /****************
     * 广告类型
     *******************/

    public final static String AD_TYPE_BAIDU = "9";//百度广告
    public final static String AD_TYPE_GDT = "13";//广点通广告
    public final static String AD_TYPE_H5 = "5";//H5广告
    public final static String AD_TYPE_GAME_VIDEO = "18";//游戏广告(跳转内页播放下载)
    public final static String AD_TYPE_GAME = "19";//游戏广告(直接下载)
    public final static String AD_TYPE_VIDEO = "29";//视频贴片
    public final static String AD_TYPE_TOUTIAO = "30";//头条广告

    /**
     * 匹配广告类型
     *
     * @param adType
     * @return
     */
    public static String getAdTypeName(String adType) {
        if (TextUtils.isEmpty(adType)) {
            return "";
        }
        switch (adType) {
            case AD_TYPE_BAIDU://百度广告
                return "百度广告";
            case AD_TYPE_GDT://广点通
                return "广点通";
            case AD_TYPE_TOUTIAO://头条
                return "头条广告";
            case AD_TYPE_H5://自定义H5
                return "H5广告";
            case AD_TYPE_GAME://游戏下载广告
                return "游戏广告";
            case AD_TYPE_GAME_VIDEO://游戏视频广告
                return "游戏视频广告";
            default:
                return "";
        }
    }


    /**************** 广告类型 *******************/

    /**
     * 添加广告_____加载更多
     *
     * @param list           被添加的数据集合
     * @param adList         广告id及添加位置的集合
     * @param sizeCount      数据的总集合
     * @param circleNativeAd 循环广告
     */
    public static void insertAd(List<NewsEntity> list, List<NativeAd> adList,
                                int sizeCount, int ad_cycle, NativeAd circleNativeAd) {
        if (list == null || list.size() == 0 || adList == null || adList.size() == 0) {
            return;
        }

        // 干扰数据 构建广告
        int listSize = list.size();
        int listItem;
        for (int i = 0; i < listSize; i++) {
            NewsEntity item = list.get(i);
            if (item != null && item.getNativeAd() != null) {
                //如果已经是广告了则解析下一条数据
                continue;
            }
            listItem = i + sizeCount + 1;//在整个列表中 的位置
            //判断这个位置是否需要添加广告
            boolean needAddI = false;
            NativeAd nativeAd = null;
            if (listItem <= adList.get(adList.size() - 1).getAdPosition()) {
                for (int j = 0; j < adList.size(); j++) {
                    if (listItem == adList.get(j).getAdPosition()) {
                        needAddI = true;
                        nativeAd = adList.get(j);
                        break;
                    }
                }

            }

            //如果不需要 则判断是否处于广告间隔的位置
            if (!needAddI && listItem > adList.get(adList.size() - 1).getAdPosition() && ad_cycle > 0) {
                needAddI = (listItem - adList.get(adList.size() - 1).getAdPosition()) % ad_cycle == 0;
            }

            //如果需要则创建广告
            if (needAddI) {
                if (nativeAd == null && circleNativeAd != null) {
                    nativeAd = circleNativeAd;
                } else if (nativeAd == null) {
                    nativeAd = new NativeAd();
                }

                if (TextUtils.isEmpty(getAdTypeName(nativeAd.getAdType()))) {
                    //如果广告的类型没有匹配上则不添加广告
                    continue;
                }
                NewsEntity newsEntity = new NewsEntity();
                newsEntity.setNativeAd(nativeAd);
                newsEntity.setArticleType(TypeConstant.AD);
                list.add(i, newsEntity);
                listSize++;
            }

        }

        //判断是否在集合结尾继续添加广告
        if (listSize == adList.get(adList.size() - 1).getAdPosition() - 1) {
            NewsEntity newsEntity = new NewsEntity();
            if (adList.get(adList.size() - 1) == null) {
                return;
            }
            newsEntity.setNativeAd(adList.get(adList.size() - 1));
            newsEntity.setArticleType(TypeConstant.AD);
            list.add(listSize, newsEntity);
        }

    }

    /**
     * 添加广告____下拉刷新
     *
     * @param list      被添加的数据集合
     * @param adList    添加广告的集合
     * @param listCount 当前总共下拉的新闻总数
     */
    public static void insertAd(List<NewsEntity> list, List<NativeAd> adList, int listCount) {
        if (list == null || list.size() == 0 || adList == null || adList.size() == 0) {
            return;
        }
        //判断这个位置是否需要添加广告
        boolean needAddI = false;
        // 干扰数据 构建广告
        int listSize = list.size();
        for (int i = 0; i < listSize; i++) {
            NewsEntity item = list.get(i);
            if (item != null && item.getNativeAd() != null) {
                //如果已经是广告了则不再解析
                continue;
            }

            NativeAd nativeAd = null;
            //如果当前的位置已经比广告集合的最后一个位置还大则不添加广告
            if ((i + 1) <= adList.get(adList.size() - 1).getAdPosition()) {
                for (int j = 0; j < adList.size(); j++) {
                    if ((i + 1) == adList.get(j).getAdPosition()) {
                        needAddI = true;
                        nativeAd = adList.get(j);
                        break;
                    }
                }

            }

            //如果需要则创建广告
            if (needAddI) {

                if (nativeAd == null) {
                    //如果广告为空则不添加广告
                    continue;
                }
                if (TextUtils.isEmpty(getAdTypeName(nativeAd.getAdType()))) {
                    //如果广告的类型没有匹配上则不添加广告
                    continue;
                }
                NewsEntity newsEntity = new NewsEntity();
                nativeAd.setAdKey(-(listSize - i + 1 + listCount));
                newsEntity.setNativeAd(nativeAd);
                newsEntity.setArticleType(TypeConstant.AD);
                list.add(i, newsEntity);
                listSize++;
            }
        }
        //如果没有匹配上则判断是否在集合结尾继续添加广告
        if (listSize == adList.get(adList.size() - 1).getAdPosition() - 1) {
            NewsEntity newsEntity = new NewsEntity();
            NativeAd nativeAd = adList.get(adList.size() - 1);
            if (nativeAd == null) {
                return;
            }
            nativeAd.setAdKey(-(1 + listCount));
            newsEntity.setNativeAd(nativeAd);
            newsEntity.setArticleType(TypeConstant.AD);
            list.add(listSize, newsEntity);
        }
    }
    /**
     * 添加广告(评论)
     *
     * @param list      被添加的数据集合
     * @param adList    添加广告的集合
     * @param listCount 当前总共下拉的新闻总数
     */
    public static void insertCommentAd(List<NewsComment> list, List<NativeAd> adList, int listCount) {
        if ( list == null || list.size() == 0 || adList == null || adList.size() == 0) {
            return;
        }
        //判断这个位置是否需要添加广告
        boolean needAddI = false;
        // 干扰数据 构建广告
        int listSize = list.size();
        for (int i = 0; i < listSize; i++) {
            NewsComment item = list.get(i);
            if (item != null && item.getNativeAd() != null) {
                //如果已经是广告了则不再解析
                continue;
            }

            NativeAd nativeAd = null;
            //如果当前的位置已经比广告集合的最后一个位置还大则不添加广告
            if ((i + 1) <= adList.get(adList.size() - 1).getAdPosition()) {
                for (int j = 0; j < adList.size(); j++) {
                    if ((i + 1) == adList.get(j).getAdPosition()) {
                        needAddI = true;
                        nativeAd = adList.get(j);
                        break;
                    }
                }

            }

            //如果需要则创建广告
            if (needAddI) {
                if (nativeAd == null) {
                    //如果广告为空则不添加广告
                    continue;
                }
                if (TextUtils.isEmpty(getAdTypeName(nativeAd.getAdType()))) {
                    //如果广告的类型没有匹配上则不添加广告
                    continue;
                }
                NewsComment newsEntity = new NewsComment();
                nativeAd.setAdKey(-(listSize - i + 1 + listCount));
                newsEntity.setNativeAd(nativeAd);
                list.add(i, newsEntity);
                listSize++;
            }
        }
        //如果没有匹配上则判断是否在集合结尾继续添加广告
        if (listSize == adList.get(adList.size() - 1).getAdPosition() - 1) {
            NewsComment newsEntity = new NewsComment();
            NativeAd nativeAd = adList.get(adList.size() - 1);
            if (nativeAd == null) {
                return;
            }
            nativeAd.setAdKey(-(1 + listCount));
            newsEntity.setNativeAd(nativeAd);
            list.add(listSize, newsEntity);
        }
    }


    /**
     * 生成或者更新广告View
     *
     * @param context
     * @param channelType 栏目类型
     * @param nativeAd      创建的广告数据
     * @param position      在集合中的索引
     * @param convertView   根布局
     * @param mBaiduAdCache 广告缓存
     * @return
     */
//    public static View getNativeAdView(Context context, String channelType, NativeAd nativeAd, int position, View convertView, HashMap<Integer,
//                SkyDexFeedNetworkResponse> mBaiduAdCache,
//                                       HashMap<Integer, NativeADDataRef> mGDTAdCache) {
//        if (context == null || nativeAd == null) {
//            return null;
//        }
//
//        if(convertView != null && convertView.getTag() == null){
//            convertView  = null;
//        }
//
//
//
//        if (convertView == null) {
//            //如果是百度广告
//            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_BAIDU)) {
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)
//                        || TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_THREE)) {
//                    //新建一个小图广告
//                    convertView = new BaiduNativeView1(context);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new BaiduNativeView2(context);
//                }
//            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GDT)) {
//                //如果是广点通广告
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)) {
//                    //新建一个小图广告
//                    convertView = new GDTNativeView1(context);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new GDTNativeView2(context);
//                }
//            }else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)){
//                //如果是游戏广告
//                if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_NEWS)){
//                    //文章列表内的图片下载广告
//                    convertView = new GameImgNativieView(context);
//                }else if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_VIDEO)){
//                    //视频列表内的图片下载列表
//                    convertView = new GameImgNativeVideoView(context);
//                }else if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_PICS)){
//                    //图库列表内的图片下载列表
//                    convertView = new GameImgNativeImgView(context);
//                }
//            }
//        }
//        //加载广告数据
//        initAdData(context, nativeAd, position, convertView, mBaiduAdCache, mGDTAdCache);
//        return convertView;
//    }


    /**
     * 生成或者更新广告View(相关新闻的)
     *
     * @param context
     * @param nativeAd      创建的广告数据
     * @param position      在集合中的索引
     * @param convertView   根布局
     * @param mBaiduAdCache 广告缓存
     * @return
     */
//    public static View getAboutNativeAdView(Context context, NativeAd nativeAd, int position, View convertView,
//                                            HashMap<Integer, SkyDexFeedNetworkResponse> mBaiduAdCache,
//                                            HashMap<Integer, NativeADDataRef> mGDTAdCache) {
//        if (context == null || nativeAd == null) {
//            return null;
//        }
//        if (convertView == null) {
//            //如果是百度广告
//            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_BAIDU)) {
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)
//                        || TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_THREE)) {
//                    //新建一个小图广告
//                    convertView = new BaiduNativeView1(context, true, 300, 215);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new BaiduNativeView2(context, true, 590, 250);
//                }
//            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GDT)) {
//                //如果是广点通广告
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)) {
//                    //新建一个小图广告
//
//                    convertView = new GDTNativeView1(context, true, 324, 232);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new GDTNativeView2(context, true, 590, 250);
//                }
//            }else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_H5)) {
//                convertView = new H5NativeView(context);
//            }else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)){
//                //如果是游戏广告
//                convertView = new GameImgNativieView(context,true,300,215);
//            }else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME_VIDEO)){
//                //如果是游戏视频广告
//                convertView = new GameVideoNativieView(context);
//            }
//        }
//
//        //加载广告数据
//        initAdData(context, nativeAd, position, convertView, mBaiduAdCache, mGDTAdCache);
//        return convertView;
//    }


    /**
     * 初始化广告数据
     *
     * @param context
     * @param nativeAd
     * @param position
     * @param convertView
     * @param mBaiduAdCache
     * @param mGDTAdCache
     */
//    private static void initAdData(Context context, NativeAd nativeAd, int position, View convertView,
//                                   HashMap<Integer, SkyDexFeedNetworkResponse> mBaiduAdCache,
//                                   HashMap<Integer, NativeADDataRef> mGDTAdCache) {
//        if(nativeAd.getAdKey() != 0){
//            position = nativeAd.getAdKey();
//        }
//        if (convertView instanceof BaiduNativeView1) {
//            //如果该广告是一个小图广告
//            boolean setAdSuc = false;
//            SkyDexFeedNetworkResponse nrAd = null;
//            if (mBaiduAdCache != null) {
//                nrAd = mBaiduAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                BaiduNativeAdManager adManager = BaiduNativeAdManager.bdNativeManagerList
//                        .get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new BaiduNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mBaiduAdCache != null){
//                            mBaiduAdCache.put(position, nrAd);
//                        }
//                        ((BaiduNativeView1) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((BaiduNativeView1) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((BaiduNativeView1) convertView).loadOneAd(nativeAd.getAdId(),nativeAd.getStyle());
//            }
//        } else if (convertView instanceof BaiduNativeView2) {
//            //如果该广告是一个大图广告
//            boolean setAdSuc = false;
//            SkyDexFeedNetworkResponse nrAd = null;
//            if (mBaiduAdCache != null) {
//                nrAd = mBaiduAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                BaiduNativeAdManager adManager = BaiduNativeAdManager.bdNativeManagerList.get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new BaiduNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mBaiduAdCache != null){
//                            mBaiduAdCache.put(position, nrAd);
//                        }
//                        ((BaiduNativeView2) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((BaiduNativeView2) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((BaiduNativeView2) convertView).loadOneAd(nativeAd.getAdId(),nativeAd.getStyle());
//            }
//        } else if (convertView instanceof GDTNativeView1) {
//            //如果该广告是一个小图广告
//            boolean setAdSuc = false;
//            NativeADDataRef nrAd = null;
//            if (mGDTAdCache != null) {
//                nrAd = mGDTAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                GDTNativeAdManager adManager = GDTNativeAdManager.gdtNativeManagerList
//                        .get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new GDTNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mGDTAdCache != null){
//                            mGDTAdCache.put(position, nrAd);
//                        }
//                        ((GDTNativeView1) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((GDTNativeView1) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((GDTNativeView1) convertView).loadOneAd(nativeAd.getAdId());
//            }
//        } else if (convertView instanceof GDTNativeView2) {
//            //如果该广告是一个小图广告
//            boolean setAdSuc = false;
//            NativeADDataRef nrAd = null;
//            if (mGDTAdCache != null) {
//                nrAd = mGDTAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                GDTNativeAdManager adManager = GDTNativeAdManager.gdtNativeManagerList
//                        .get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new GDTNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mGDTAdCache != null){
//                            mGDTAdCache.put(position, nrAd);
//                        }
//                        ((GDTNativeView2) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((GDTNativeView2) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((GDTNativeView2) convertView).loadOneAd(nativeAd.getAdId());
//            }
//        } else if (convertView instanceof H5NativeView) {
//            //如果该广告是一个H5广告
//            ((H5NativeView) convertView).setNativeAd(nativeAd);
//        } else if (convertView instanceof GameImgNativieView) {
//            //如果该广告是一个文章列表游戏广告
//            ((GameImgNativieView) convertView).setNativeAd(nativeAd);
//        }else if(convertView instanceof GameImgNativeImgView){
//            //如果该广告是一个视频列表游戏广告
//            ((GameImgNativeImgView) convertView).setNativeAd(nativeAd);
//        }else if(convertView instanceof GameVideoNativieView){
//            //如果是视频游戏广告
//            ((GameVideoNativieView)convertView).setNativeAd(nativeAd);
//        }
//        //记录当前服务器的配置的广告,用于后面点击广告统计
//        if(convertView != null){
//            convertView.setTag(R.id.tag_first,nativeAd.getSerialId());
//        }
//    }

    /**************************** 以下是视频广告的相关 start *******************/


//    /**
//     * 生成或者更新广告View(视频广告的)
//     *
//     * @param context
//     * @param nativeAd      创建的广告数据
//     * @return
//     */
//    public static BaiduNativeVideoView getViedoAdView(Context context, NativeAdVideo nativeAd,BaiduNativeVideoView convertView) {
//        if (context == null || nativeAd == null) {
//            return null;
//        }
//        if(convertView == null){
//            convertView = new BaiduNativeVideoView(context);
//        }
//        //设置开始 暂停 结尾的贴片广告
//        for(int i=0;i<3;i++){
//            String adid = null;
//            if(i == 0 && nativeAd.getHead() != null){
//                //获取开头贴片id
//                adid = nativeAd.getHead().getAdId();
////                adid = "3301483";
//            }else if(i == 1 && nativeAd.getPause() != null){
//                //获取暂停贴片id
//                adid = nativeAd.getPause().getAdId();
//            }else if(nativeAd.getTail() != null){
//                //获取结尾贴片id
//                adid = nativeAd.getTail().getAdId();
//            }
//            if(TextUtils.isEmpty(adid)){
//                continue;
//            }
//            //设置广告加载成功标识
//            boolean setAdSuc = false;
//            // 获取该id的广告管理者
//            BaiduNativeVideoAdManager adManager = BaiduNativeVideoAdManager.bdNativeManagerList
//                    .get(adid);
//            if (adManager == null) {
//                //如果是第一次获取则该广告的广告管理者
//                adManager = new BaiduNativeVideoAdManager(context, adid);
//                //添加到广告管家集合
//                BaiduNativeVideoAdManager.bdNativeManagerList.put(adid, adManager);
//            }
//            int nativeAdSize = adManager.getNativeAdSize();
//            // 如果广告缓存中有广告则开始获取
//            if (nativeAdSize > 0) {
//                BaiduVideoResponse nrAd = adManager.getNativeAd();
//                // 如果获取的广告不为null
//                if (nrAd != null) {
//                    //设置贴片广告数据
//                    if(i == 0){
//                        convertView.setNativeAd(nrAd,nativeAd.getInsertAdTime());
//                    }else if(i == 1){
//                        convertView.setPauseNatived(nrAd);
//                    }else{
//                        convertView.setTailNatived(nrAd);
//                    }
//                    setAdSuc = true;
//                }
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc && i == 0) {
//                //只有开头的贴片广告才走此逻辑
//                convertView.loadOneAd(adid,nativeAd.getInsertAdTime());
//            }
//        }
//
//        //记录当前服务器的配置的广告,用于后面点击广告统计
//        convertView.setTag(R.id.tag_first,nativeAd);
//        return convertView;
//    }

    /**************************** 以下是视频广告的相关 end *******************/

    public static void staticsAd(String serialId, String type, String adType) {
        if (TextUtils.isEmpty(serialId)) {
            return;
        }
        ParamMap parmsMap = new ParamMap();
        parmsMap.putEncode("serialId", serialId);
        parmsMap.putEncode("type", type + "");
        parmsMap.putEncode("adType", adType + "");
        HttpUtils.ParmsMapMD5(parmsMap);
        //请求网络统计广告点击
        HttpUtils.addPostRequest(URIContant.AD_STATISTICS, new TypeToken<DataBean<String>>() {
        }.getType(), "", parmsMap, null);
    }


    /***********************************华为的----没有GDT----baidu未混淆---START******************************************/
//
//    public static View getNativeAdView(Context context, String channelType, NativeAd nativeAd, int position, View convertView, HashMap<Integer,
//                SkyDexFeedNetworkResponse> mBaiduAdCache) {
//        if (context == null || nativeAd == null) {
//            return null;
//        }
//
//        if(convertView != null && convertView.getTag() == null){
//            convertView  = null;
//        }
//
//
//
//        if (convertView == null) {
//            //如果是百度广告
//            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_BAIDU)) {
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)
//                        || TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_THREE)) {
//                    //新建一个小图广告
//                    convertView = new BaiduNativeView1(context);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new BaiduNativeView2(context);
//                }
//            }
//            else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)){
//                //如果是游戏广告
//                if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_NEWS)){
//                    //文章列表内的图片下载广告
//                    convertView = new GameImgNativieView(context);
//                }else if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_VIDEO)){
//                    //视频列表内的图片下载列表
//                    convertView = new GameImgNativeVideoView(context);
//                }else if(TextUtils.equals(channelType,TypeConstant.CHANNEL_TYPE_PICS)){
//                    //图库列表内的图片下载列表
//                    convertView = new GameImgNativeImgView(context);
//                }
//            }
//        }
//        //加载广告数据
//        initAdData(context, nativeAd, position, convertView, mBaiduAdCache);
//        return convertView;
//    }
//
//
//
//
//
//    private static void initAdData(Context context, NativeAd nativeAd, int position, View convertView,
//                                   HashMap<Integer, SkyDexFeedNetworkResponse> mBaiduAdCache) {
//        if(nativeAd.getAdKey() != 0){
//            position = nativeAd.getAdKey();
//        }
//        if (convertView instanceof BaiduNativeView1) {
//            //如果该广告是一个小图广告
//            boolean setAdSuc = false;
//            SkyDexFeedNetworkResponse nrAd = null;
//            if (mBaiduAdCache != null) {
//                nrAd = mBaiduAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                BaiduNativeAdManager adManager = BaiduNativeAdManager.bdNativeManagerList
//                        .get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new BaiduNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mBaiduAdCache != null){
//                            mBaiduAdCache.put(position, nrAd);
//                        }
//                        ((BaiduNativeView1) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((BaiduNativeView1) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((BaiduNativeView1) convertView).loadOneAd(nativeAd.getAdId(),nativeAd.getStyle());
//            }
//        } else if (convertView instanceof BaiduNativeView2) {
//            //如果该广告是一个大图广告
//            boolean setAdSuc = false;
//            SkyDexFeedNetworkResponse nrAd = null;
//            if (mBaiduAdCache != null) {
//                nrAd = mBaiduAdCache.get(position);
//            }
//            if (nrAd == null) {
//                // 如果没有获取到广告则 从广告管家里获取一个新广告
//                BaiduNativeAdManager adManager = BaiduNativeAdManager.bdNativeManagerList.get(nativeAd.getAdId());
//                if (adManager == null) {
//                    adManager = new BaiduNativeAdManager(context, nativeAd.getAdId());
//                }
//                int nativeAdSize = adManager.getNativeAdSize();
//                // 如果广告缓存中有广告则开始获取
//                if (nativeAdSize > 0) {
//                    nrAd = adManager.getNativeAd();
//                    // 如果获取的广告不为null
//                    if (nrAd != null) {
//                        // 添加到加载过的广告集合中
//                        if(mBaiduAdCache != null){
//                            mBaiduAdCache.put(position, nrAd);
//                        }
//                        ((BaiduNativeView2) convertView).setNativeAd(nrAd);
//                        setAdSuc = true;
//                    }
//                }
//            } else {
//                ((BaiduNativeView2) convertView).setNativeAd(nrAd);
//                setAdSuc = true;
//            }
//            //如果没有加载成功广告 则新建一个广告链接 获取广告
//            if (!setAdSuc) {
//                ((BaiduNativeView2) convertView).loadOneAd(nativeAd.getAdId(),nativeAd.getStyle());
//            }
//        }
////        else if (convertView instanceof GDTNativeView1) {
////            //如果该广告是一个小图广告
////            boolean setAdSuc = false;
////            NativeADDataRef nrAd = null;
////            if (mGDTAdCache != null) {
////                nrAd = mGDTAdCache.get(position);
////            }
////            if (nrAd == null) {
////                // 如果没有获取到广告则 从广告管家里获取一个新广告
////                GDTNativeAdManager adManager = GDTNativeAdManager.gdtNativeManagerList
////                        .get(nativeAd.getAdId());
////                if (adManager == null) {
////                    adManager = new GDTNativeAdManager(context, nativeAd.getAdId());
////                }
////                int nativeAdSize = adManager.getNativeAdSize();
////                // 如果广告缓存中有广告则开始获取
////                if (nativeAdSize > 0) {
////                    nrAd = adManager.getNativeAd();
////                    // 如果获取的广告不为null
////                    if (nrAd != null) {
////                        // 添加到加载过的广告集合中
////                        if(mGDTAdCache != null){
////                            mGDTAdCache.put(position, nrAd);
////                        }
////                        ((GDTNativeView1) convertView).setNativeAd(nrAd);
////                        setAdSuc = true;
////                    }
////                }
////            } else {
////                ((GDTNativeView1) convertView).setNativeAd(nrAd);
////                setAdSuc = true;
////            }
////            //如果没有加载成功广告 则新建一个广告链接 获取广告
////            if (!setAdSuc) {
////                ((GDTNativeView1) convertView).loadOneAd(nativeAd.getAdId());
////            }
////        } else if (convertView instanceof GDTNativeView2) {
////            //如果该广告是一个小图广告
////            boolean setAdSuc = false;
////            NativeADDataRef nrAd = null;
////            if (mGDTAdCache != null) {
////                nrAd = mGDTAdCache.get(position);
////            }
////            if (nrAd == null) {
////                // 如果没有获取到广告则 从广告管家里获取一个新广告
////                GDTNativeAdManager adManager = GDTNativeAdManager.gdtNativeManagerList
////                        .get(nativeAd.getAdId());
////                if (adManager == null) {
////                    adManager = new GDTNativeAdManager(context, nativeAd.getAdId());
////                }
////                int nativeAdSize = adManager.getNativeAdSize();
////                // 如果广告缓存中有广告则开始获取
////                if (nativeAdSize > 0) {
////                    nrAd = adManager.getNativeAd();
////                    // 如果获取的广告不为null
////                    if (nrAd != null) {
////                        // 添加到加载过的广告集合中
////                        if(mGDTAdCache != null){
////                            mGDTAdCache.put(position, nrAd);
////                        }
////                        ((GDTNativeView2) convertView).setNativeAd(nrAd);
////                        setAdSuc = true;
////                    }
////                }
////            } else {
////                ((GDTNativeView2) convertView).setNativeAd(nrAd);
////                setAdSuc = true;
////            }
////            //如果没有加载成功广告 则新建一个广告链接 获取广告
////            if (!setAdSuc) {
////                ((GDTNativeView2) convertView).loadOneAd(nativeAd.getAdId());
////            }
////        }
////
//
//
//        else if (convertView instanceof H5NativeView) {
//            //如果该广告是一个H5广告
//            ((H5NativeView) convertView).setNativeAd(nativeAd);
//        } else if (convertView instanceof GameImgNativieView) {
//            //如果该广告是一个文章列表游戏广告
//            ((GameImgNativieView) convertView).setNativeAd(nativeAd);
//        }else if(convertView instanceof GameImgNativeImgView){
//            //如果该广告是一个视频列表游戏广告
//            ((GameImgNativeImgView) convertView).setNativeAd(nativeAd);
//        }else if(convertView instanceof GameVideoNativieView){
//            //如果是视频游戏广告
//            ((GameVideoNativieView)convertView).setNativeAd(nativeAd);
//        }
//        //记录当前服务器的配置的广告,用于后面点击广告统计
//        if(convertView != null){
//            convertView.setTag(R.id.tag_first,nativeAd.getSerialId());
//        }
//    }
//
//
//
//
//    public static View getAboutNativeAdView(Context context, NativeAd nativeAd, int position, View convertView,
//                                            HashMap<Integer, SkyDexFeedNetworkResponse> mBaiduAdCache) {
//        if (context == null || nativeAd == null) {
//            return null;
//        }
//        if (convertView == null) {
//            //如果是百度广告
//            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_BAIDU)) {
//                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)
//                        || TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_THREE)) {
//                    //新建一个小图广告
//                    convertView = new BaiduNativeView1(context, true, 300, 215);
//                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
//                    //新建一个大图广告
//                    convertView = new BaiduNativeView2(context, true, 590, 250);
//                }
//            }
//
////            else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GDT)) {
////                //如果是广点通广告
////                if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_SMALL)) {
////                    //新建一个小图广告
////
////                    convertView = new GDTNativeView1(context, true, 324, 232);
////                } else if (TextUtils.equals(nativeAd.getStyle(), AdConfig.AD_VIEW_TYPE_LIST_NATIVE_BIG)) {
////                    //新建一个大图广告
////                    convertView = new GDTNativeView2(context, true, 590, 250);
////                }
////            }
//
//
//            else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_H5)) {
//                convertView = new H5NativeView(context);
//            }else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)){
//                //如果是游戏广告
//                convertView = new GameImgNativieView(context,true,300,215);
//            }else if(TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME_VIDEO)){
//                //如果是游戏视频广告
//                convertView = new GameVideoNativieView(context);
//            }
//        }
//
//        //加载广告数据
//        initAdData(context, nativeAd, position, convertView, mBaiduAdCache);
//        return convertView;
//    }
//


    /***********************************没有GDT----baidu未混淆---END******************************************/


    /***********************************其他市场----有GDT----baidu混淆---START******************************************/


    public static View getNativeAdView(Context context, String channelType, NativeAd nativeAd, int position, View convertView, HashMap<String, Object> mapEvent) {
        LogUtils.e("channelType", channelType);
        if (context == null || nativeAd == null) {
            return null;
        }

        if (convertView != null && convertView.getTag() == null) {
            convertView = null;
        }
        if (convertView == null) {
            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)) {
                //如果是游戏广告
                if (TextUtils.equals(channelType, TypeConstant.CHANNEL_TYPE_NEWS)) {
                    //文章列表内的图片下载广告
                    convertView = new GameImgNativieView(context, mapEvent);
                } else if (TextUtils.equals(channelType, TypeConstant.CHANNEL_TYPE_VIDEO)) {
                    //视频列表内的图片下载列表
                    convertView = new GameImgNativeVideoView(context, mapEvent);
                } else if (TextUtils.equals(channelType, TypeConstant.CHANNEL_TYPE_PICS)) {
                    //图库列表内的图片下载列表
                    convertView = new GameImgNativeImgView(context, mapEvent);
                }
            }
        }
        //加载广告数据
        initAdData(context, nativeAd, position, convertView);
        return convertView;
    }


    public static View getAboutNativeAdView(Context context, NativeAd nativeAd, int position, View convertView, HashMap<String, Object> mapEvent) {
        if (context == null || nativeAd == null) {
            return null;
        }
        MobclickAgentUtils.event(UmEventId.game_exposed, UmEventId.INSTANCE.getArticleabout());
        if (convertView == null) {
            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_H5)) {
                convertView = new H5NativeView(context, mapEvent);
            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)) {
                //如果是游戏广告
                convertView = new GameImgNativieView(context, true, 300, 215, mapEvent);
            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME_VIDEO)) {
                //如果是游戏视频广告
                convertView = new GameVideoNativieView(context, mapEvent);
            }
        }

        //加载广告数据
        initAdData(context, nativeAd, position, convertView);
        return convertView;
    }

    public static View getArticleBottomNativeAdView(Context context, NativeAd nativeAd, int position, View convertView, HashMap<String, Object> eventMap) {
        if (context == null || nativeAd == null) {
            return null;
        }
        MobclickAgentUtils.event(UmEventId.game_exposed, UmEventId.INSTANCE.getArticlebottom());
        if (convertView == null) {
            if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_H5)) {
                convertView = new H5NativeView(context, eventMap);
            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME)) {
                //如果是游戏广告
                convertView = new GameImgNativieView(context, true, 300, 215, eventMap);
            } else if (TextUtils.equals(nativeAd.getAdType(), AdConfig.AD_TYPE_GAME_VIDEO)) {
                //如果是游戏视频广告
                convertView = new GameVideoNativieView(context, eventMap);
            }
        }

        //加载广告数据
        initAdData(context, nativeAd, position, convertView);
        return convertView;
    }


    private static void initAdData(Context context, NativeAd nativeAd, int position, View convertView) {
        if (nativeAd.getAdKey() != 0) {
            position = nativeAd.getAdKey();
        }
        if (convertView instanceof H5NativeView) {
            //如果该广告是一个H5广告
            ((H5NativeView) convertView).setNativeAd(nativeAd);
        } else if (convertView instanceof GameImgNativieView) {
            //如果该广告是一个文章列表游戏广告
            ((GameImgNativieView) convertView).setNativeAd(nativeAd);
        } else if (convertView instanceof GameImgNativeImgView) {
            //如果该广告是一个视频列表游戏广告
            ((GameImgNativeImgView) convertView).setNativeAd(nativeAd);
        } else if (convertView instanceof GameVideoNativieView) {
            //如果是视频游戏广告
            ((GameVideoNativieView) convertView).setNativeAd(nativeAd);
        }
        //记录当前服务器的配置的广告,用于后面点击广告统计
        if (convertView != null) {
//            convertView.setTag(R.id.tag_first, nativeAd.getSerialId());
            convertView.setTag(nativeAd.getSerialId());
        }
    }


    /***********************************其他市场----有GDT----baidu混淆---END******************************************/


}
